package com.itlong.cloud.sdk.service;

import com.itlong.cloud.POJO.DTO.property.PropertyEquipGetDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKEquipGetByPageDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKEquipGetPageDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKUnitInfoSaveDTO;
import com.itlong.cloud.POJO.PO.DeviceElevatorAuthPO;
import com.itlong.cloud.POJO.PO.DeviceElevatorBridgeInfoPO;
import com.itlong.cloud.POJO.PO.DeviceElevatorInfoPO;
import com.itlong.cloud.POJO.VO.property.PropertyEquipRecordGetVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      SDK设备服务接口
 * </desc>
 *
 * @createDate 2017/11/14
 */
public interface ISDKServerOldEquipService {

    /**
     * <desc>
     *      根据地址，分页查询设备信息
     * <desc/>
     * @param       sdkEquipGetPageDTO  待查询的数据封装对象
     * @return      分页设备信息
     * @author Biao.R
     * @createDate 2017/11/16
     */
    Page<PropertyEquipGetDTO> getEquipPageByAddr(SDKEquipGetPageDTO sdkEquipGetPageDTO);

    /**
     * <desc>
     *      根据设备唯一码查询设备归属地址信息
     * <desc/>
     * @param       deviceUnique     设备唯一码
     * @return      设备归属地址信息  设备归属地信息集
     * @author Biao.R
     * @createDate 2017/11/16
     */
    List<SDKUnitInfoSaveDTO> getAddrNumByDeviceUnique(String deviceUnique);


    /**
     * <desc>
     *      根据设备唯一码查询设备归属地址信息
     * <desc/>
     * @param      param    查询参数集
     * @return      设备归属地信息集
     * @author Biao.R
     * @createDate 2017/11/16
     */
    List<DeviceElevatorBridgeInfoPO> getAddrByParams(Map<String, Object> param);

    /**
     * <desc>
     *      分页查询设备通行记录
     * <desc/>
     * @param       sdkEquipGetByPageDTO    查询参数封装DTO
     * @return      查询出的分页数据
     * @author Biao.R
     * @createDate 2017/11/21
     */
    Page<PropertyEquipRecordGetVO> getEquipRecordPage(SDKEquipGetByPageDTO sdkEquipGetByPageDTO);


    /**
     * <desc>
     *      根据设备唯一码查询设备
     * <desc/>
     * @param   deviceUnique    待查询的设备唯一码
     * @return  查询到的设备
     * @author Biao.R
     * @createDate 2017/11/23
     */
    DeviceElevatorInfoPO getEquipByDeviceUnique(String deviceUnique);

    /**
     * <desc>
     *      更新动态密码到电梯权限表
     * <desc/>
     * @param  elevatorAuthPO 待更新的数据
     * @return  更新的数量
     * @author Biao.R
     * @createDate 2017/11/23
     */
    Integer updateDynamicPwd(DeviceElevatorAuthPO elevatorAuthPO);

    /**
     * <desc>
     *      根据参数查询设备（电梯或门禁）
     * <desc/>
     * @param   params  查询参数
     * @return  查询设备结果集
     * @author Biao.R
     * @createDate 2017/11/25
     */
    List<PropertyEquipGetDTO> getEquipByParam(Map<String, Object> params);

    /**
     * <desc>
     *      根据参数查询最大的deviceId
     * <desc/>
     * @param   params  查询参数
     * @return  查询出的最大deviceId,若没有，则为0
     * @author Biao.R
     * @createDate 2017/11/25
     */
    Integer getMaxDeviceId(Map<String, Object> params);

    /**
     * <desc>
     *     根据地址查询电梯信息
     * <desc/>
     * @param  projectId    操作的项目编号
     * @param  buildNum     楼栋编号（多个以英文，分隔）
     * @param  unitNum      单元编号（多个以英文，分隔）
     * @return 电梯信息集合
     * @author Biao.R
     * @createDate 2018/3/1
     */
    List<PropertyEquipGetDTO> getElevatorByAddress(String projectId, String buildNum, String unitNum);
}
